package pe.edu.upla.lamerced.DAO.impl;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import pe.edu.upla.lamerced.DAO.CategoriaDAO;
import pe.edu.upla.lamerced.bean.Categoria;
import pe.edu.upla.lamerced.bean.Detcategoria;

public class CategoriaDAOImpl extends HibernateDaoSupport implements CategoriaDAO{

   public static final Logger logger = Logger.getLogger(CategoriaDAOImpl.class);

	public CategoriaDAOImpl(){}
	
	public CategoriaDAOImpl(SessionFactory sessionFactory){
		setHibernateTemplate( new HibernateTemplate(sessionFactory));
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<Categoria> listarCategorias() {
		return this.getHibernateTemplate().find("from Categoria c where estado=1");
	}

	@Override
	public Categoria obtenercategoria(Integer cat) {
		Query query = getSession().createQuery(" from Categoria h where idcategoria= :id ")
        .setInteger("id", cat);
        return (Categoria) query.uniqueResult();

	}

	@Override
	public void registrarCategoria(Categoria categoria) {
		this.getHibernateTemplate().saveOrUpdate(categoria);
	}

   public void registrarDetalleCategoria(Detcategoria det) {
     this.getHibernateTemplate().saveOrUpdate(det);
   }

   public List<Detcategoria> listardetalleCategorias() {
      return this.getHibernateTemplate().find("from Detcategoria d join fetch d.categoria where d.estado = 1");
   }

   public List<Detcategoria> listardetalleCategorias(Integer idcategoria) {
      Query query = getSession().createQuery("from Detcategoria d join fetch d.categoria where d.estado = 1 and d.categoria.idcategoria= :idcat")
        .setInteger("idcat", idcategoria);
        return (List<Detcategoria>) query.list();
   }


	}
